var token;
var Headers;
// var URL = 'http://master.ccxapp.com/'
    /*
    开工第一天，温馨提醒您：
    代码千万行，注释第一行。
    命名不规范，同事泪千行。
    */
    // 初始化方法
  function init() {
      Distinguish()
      getToken();
      CheckToken();
      fnGetConnetionStatus();
      console.log("TOKEN: " + token);
      console.log("Headers: " + JSON.stringify(Headers))
  }

var BASE = {
    'MYajax': function() {},
}

/*
全局ajax方法，参数param：
function fnGetNewData() {
  BASE.MYajax({
    'pathName': '', //请求路径
     'methods': 'POST',
    'ajaxData': {
       values:{
       },
       files:{
       }
      },
    'method': fnGetInitData //调用函数
  });
}


function fnGetInitData(ret,err) {
    回调
}

*/

BASE.MYajax = function(param) {
    console.log("ajax请求:" + JSON.stringify(param));
    getToken();
    console.log(token);
    api.ajax({
        url: URL + param.pathName,
        method: param.methods,
        headers: Headers,
        dataType: 'json', //返回类型
        report: param.report,
        // dataType: 'json', //返回类型
        data: param.ajaxData, //传递参数，body如果传json类型，header中必须加上传参类             型'Content-Type': "application/json"
        returnAll: true, //是否全部返回（包括请求头
    }, function(ret, err) {
        fnLodingHide()
        var myDate = new Date();
        var mytime = myDate.toLocaleTimeString(); //获取当前时间
        //获取日期与时间
        console.log("ajaxTime:" + mytime);
        if (ret) {
            console.log("回调成功：" + JSON.stringify(ret));
            // 判断是否需要替换新的token
            if (ret.headers) {
                if (ret.headers.Authorization) {
                    token = ret.headers.Authorization;
                    // alert('需要获取新的token： ' + token)
                    $api.setStorage('token', token);
                }
            }
            if (!param.report) {
                ret = ret.body;
            }
            if (param.method) {
                console.log("有回调方法");
                param.method(ret, err); //调用方法
                return;
            }
            console.log("无回调方法");
        } else {
            err = err.body
            reToast(ret, err);
            console.log('失败' + JSON.stringify(err));
            return;
        }
    });
}


// 显示loding
function fnLodingShow() {
    api.showProgress({
        title: '努力加载中...',
        text: '先喝杯茶...',
    });
}

// 隐藏loding
function fnLodingHide() {
    api.hideProgress();
}


// 网络状态
function fnGetConnetionStatus() {
    connectionType = api.connectionType;
    //下面这几行代码就为最关键的，实时监听你网络的变化，来改变connectionType的
    //值，从而解决了舒心页面的问题
    api.addEventListener({
        name: 'online'
    }, function(ret, err) {
        connectionType = ret.connectionType;
    });
    api.addEventListener({
        name: 'offline'
    }, function(ret, err) {
        connectionType = "";
        fnOpenLogin();
        api.toast({
            msg: '您还未联网,请联网后重试',
            duration: 2000,
            location: 'bottom',
            global: true
        });
    });
}

// 登录
function fnOpenLogin() {
    api.openWin({
        name: 'login',
        url: 'login.html',
        bounces: false,
        slidBackEnabled: false,
        delay: 300,
        animation: {
            type: 'ripple',
            duration: 1000
        }
    })
}

/*表单获取*/
function fromsub(inputClass) {
    var tagElements = document.getElementsByClassName(inputClass); //这里我把所有我要获取值得属性都使用了同一个类来标识；
    var json = {};
    for (var j = 0; j < tagElements.length; j++) {
        var name = tagElements[j].name; //这里就是要获取得name属性，将此name属性作为json对象得key；
        var value = tagElements[j].value;
        json[name] = value;  //注意这里必须要使用这种方式给json赋值。如果使用json.name=value得话你会发现你所有的key都是一个字符串name，而不是name代表的值
    }
    return json;
}

// 返回提示  reToast(ret, err)
function reToast(ret, err) {
    fnLodingHide()
    var remessage;
    if (ret) {
        console.log("reToast:" + JSON.stringify(ret));
        api.toast({
            msg: "车车侠：" + ret.message,
            duration: 2000,
            location: 'bottom',
            global: true,
        });
        if (ret.code == 250) {
            fnOpenLogin()
        } else if (ret.code == 403) {
            fnOpenLogin()
        }
    } else {
        console.log("reToast:" + JSON.stringify(err));
        if (err.message)
            api.toast({
                msg: "车车侠：" + err.message,
                duration: 2000,
                location: 'bottom',
                global: true,
            });
    }
}

// 获取token
function getToken() {
    token = $api.getStorage('token');
    Headers = {
        'AUTHORIZATION': 'Bearer ' + token
    }
    return token;
}

// 检查token
function CheckToken() {
    token = getToken();
    // alert('top.CheckToekn'+token)
    if (!token) {
        api.openWin({
            name: 'login',
            url: 'login.html',
            bounces: false,
            opaque: false,
            showProgress: true,
            vScrollBarEnabled: false,
            hScrollBarEnabled: false,
            slidBackEnabled: false,
            delay: 300,
            animation: {
                duration: 1000
            }
        });
        alert("登陆已失效");
        // $api.toast('登陆已失效', '请退出重新登陆',  2000);
    }
}

//头部手机型号适配开始
function Distinguish() {
    //			var header = document.querySelector('#header');
    //			$api.fixStatusBar(header);
    var systemType = api.systemType; // systemType获取手机类型，比如： ios
    var deviceModel = api.deviceModel; //deviceModel设备型号
    var deviceModell = deviceModel.substring(6, 8);
    var deviceModelll = deviceModel.substring(9);
    // alert('deviceModel');
    var header = document.querySelector('#header');
    // $api.fixStatusBar(header);
    if (systemType == 'ios') { //兼容ios/安卓/iPhone10*
        //判断 x
        if (deviceModell == 10 && (deviceModelll == 3 || deviceModelll == 6)) {
            $api.addCls(header, 'headerIosx86');
            document.getElementsByClassName("box")[0].style.padding = "88px 0 0 0";
        }
        //判断x以上
        else if (deviceModell > 10) {
            $api.addCls(header, 'headerIosx86')
        } else if (deviceModell <= 10 && (deviceModelll != 3 || deviceModelll != 6)) {
            $api.addCls(header, 'headerIos');
            document.getElementsByClassName("box")[0].style.padding = "64px 0 0 0";
        }

    } else {
        $api.addCls(header, 'headerAnd');
        document.getElementsByClassName("box")[0].style.padding = "44px 0 0 0";
    }
    api.setStatusBarStyle({
        color: '#0A5AF9', //设置APP状态栏背景色
        style: 'light'
    });
} //头部手机型号适配结束

// 更新主页的初始化信息
function HEADPAGEINIT() {
    getToken();
    // alert("初始化")
    console.log('headPageInit');
    // 方法名
    var qbjsfun = 'fnGetNewData();';
    var headPagejsfun = 'fnGetNewData();';
    var Mydetailsjsfun = 'fnGetNewData();';
    // 调用
    api.execScript({
        // window名字
        name: 'headPage',
        // frame名字
        frameName: 'headPage',
        // 执行win下的frame中的方法
        script: headPagejsfun,
    });

    // 调用
    api.execScript({
        // window名字
        name: 'headPage',
        // frame名字
        frameName: 'qb',
        // 执行win下的frame中的方法
        script: qbjsfun,
    });

    // 调用
    api.execScript({
        // window名字
        name: 'headPage',
        // frame名字
        frameName: 'Mydetails',
        // 执行win下的frame中的方法
        script: Mydetailsjsfun,
    });

}
